class Foo { constructor(bar) { this.bar = bar } getBar() { return this.bar } } function unmethodize(f) { return function(object, ...args) { return f.apply(object, args) } } const unmethodizedGetBar = unmethodize(Foo.prototype.getBar) function test() { foos = [new Foo(1), new Foo(2), new Foo(3)] return foos.map(unmethodizedGetBar) } Conozco foos.map(foo => foo.getBar()) etc.
Simplemente quiero una versión de getBar que tome el objeto "este" como su primer parámetro. ¿Ya existe en alguna parte, o debo crearlo a través unmethodize o algo así?
¿Ya existe en alguna parte?
No, tendrás que crearlo tú mismo. El getBar en su clase define solo un método que espera this argumento.
Sin embargo, si no desea utilizar una función de flecha o escribir su propia función de unmethodize , puede lograr esto solo con funciones integradas:
const unmethodize = Function.bind.bind(Function.call);foos.map(Function.call.bind(Foo.prototype.getBar))foos.map(Function.call, Foo.prototype.getBar)Pero en serio solo usa la función de flecha :-)